前兩天談到的部份,算是程式領域裡面很大的硬傷。雖然為了避免系統變得越來越複雜,人們提出各式各樣的改善方案,像是物件導向設計、資料封裝、降低耦合度、事件驅動、設計模式、軟體工程、敏捷軟體開發、DSL… 當然也有一派走比較學術路線的,就走向了推理引擎、規則引擎、專家系統、自然語言分析…
對於當時還是無知新手的我來說,被一堆沒聽過的專有名詞轟炸的時候,除了腦袋冒煙以外,好像也沒別的辦法了。這似乎也是程式領域變成深水坑的原因:為了解決問題開發出來的工具,反而學習曲線變得更陡,新手越來越難一窺全貌。
在另一個平行時空,同樣是沒碰過程式的新手,透過 VB.NET 把他的遊戲成品寫出來了,沒有美術、圖形介面有點醜、沒辦法連線對戰。
「什麼?!業界沒有人在用 VB 開發程式的啦」
「VB 跑很慢啦,VB 不好啦,C/C++, java 才是正統,你應該要用這個才對」
在很多年之後我才慢慢認清,業界瀰漫著一種看不見的鄙視鏈[1]、程式語言的宗教戰爭 [2],在無形之中阻礙了我往前
如果回到當初,我會給那個想要寫卡牌遊戲的男孩以下幾點建議:
關於第四點是我感觸很深的一點,現在老手常對新手的話就是「你不會咕狗喔」、「去看文件」。
發問永遠是解決問題最快的方法,即使是最資深的工程師,遇到問題一樣會選擇用面對面溝通的方式解決問題。溝通能處理非常多潛在問題,溝通是程式員很重要的素養。
接下來大致分享一個從無到有開發遊戲的人會遇到哪些困難?套用現成遊戲引擎比較不是我想講的部份,我希望可以講一些底層運作的機制。系列最後,希望可以復刻「爐石戰記」裡面出現的一些遊戲機制,讓大家體驗卡牌遊戲開發的感覺。
[1] https://vinta.ws/blog/695 軟體工程師的鄙視鏈(程序员的鄙视链)
[2] https://tw.alphacamp.co/blog/2015-10-20-dont-be-too-religious-in-programing 淺談程式設計派系對立造成的負面影響